public class code1 {
//    力扣 top150 删除数组中的所有重复项
public int removeDuplicates(int[] nums) {
    int fast = 0;
    int slow = 0;
    int count = 1;
    // 这道题目第一种解法可以通过计数的方式解决
    for(int i = 1; i < nums.length; i++) {
        // 这里的两个指针需要再一开始就错开位置
        fast = i;
        // 先针对两个位置上的值相等的情况进行判断
        if(nums[fast] == nums[slow]) {
            // 这里需要注意的是，如果当前这个位置的数长度小于 2 时，此时 fast 指针就会跟着 i 一并向后移动。
            if(count < 2) {
                // 将慢指针向前移动并且将 fast 位置的值赋值给 slow 重整数组
                nums[++slow] = nums[fast];
                // 之后将当前这个相同的数字多记录一次
                count++;
            }
        } else if(nums[fast] != nums[slow]){
            // 这里处理的是两个指针指向位置的值不同
            // 此时需要将 fast 位置的值转移到 slow 指针的后一个位置处
            nums[++slow] = nums[fast];
            // 此时重新进行技术
            count = 1;
        }
    }
    // 返回值这里，需要注意的是 slow 指针需要进行 +1 操作
    return slow + 1;
}
}
